<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>QSculpt: ISurface Class Reference</title>

<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css" />

<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>

</head>
<body>
<div id="top"><!-- do not remove this div! -->


<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  
  
  <td style="padding-left: 0.5em;">
   <div id="projectname">QSculpt
   &#160;<span id="projectnumber">0.0.1a</span>
   </div>
   
  </td>
  
  
  
 </tr>
 </tbody>
</table>
</div>

<!-- Generated by Doxygen 1.7.5.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#signals">Signals</a> &#124;
<a href="#pub-methods">Public Member Functions</a>  </div>
  <div class="headertitle">
<div class="title">ISurface Class Reference</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="ISurface" -->
<p><code>#include &lt;<a class="el" href="_i_surface_8h_source.html">ISurface.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for ISurface:</div>
<div class="dyncontent">
 <div class="center">
  <img src="class_i_surface.png" usemap="#ISurface_map" alt=""/>
  <map id="ISurface_map" name="ISurface_map">
<area href="class_mesh.html" alt="Mesh" shape="rect" coords="0,56,77,80"/>
<area href="class_subdivision.html" alt="Subdivision" shape="rect" coords="130,56,207,80"/>
<area href="class_box.html" alt="Box" shape="rect" coords="0,112,77,136"/>
<area href="class_plane.html" alt="Plane" shape="rect" coords="87,112,164,136"/>
<area href="class_quad.html" alt="Quad" shape="rect" coords="174,112,251,136"/>
<area href="class_sphere.html" alt="Sphere" shape="rect" coords="261,112,338,136"/>
</map>
 </div></div>

<p><a href="class_i_surface-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8a21a5a813a34ede2af93ca59bcb886"></a><!-- doxytag: member="ISurface::SharedPtr" ref="af8a21a5a813a34ede2af93ca59bcb886" args="" -->
typedef std::shared_ptr&lt; <a class="el" href="class_i_surface.html">ISurface</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>SharedPtr</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0642af0d729a72e7cd7c2f7848276353"></a><!-- doxytag: member="ISurface::WeakPtr" ref="a0642af0d729a72e7cd7c2f7848276353" args="" -->
typedef std::weak_ptr&lt; <a class="el" href="class_i_surface.html">ISurface</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>WeakPtr</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aea2d7c993f6ce24573af7a8a14eebe3c"></a><!-- doxytag: member="ISurface::Ptr" ref="aea2d7c993f6ce24573af7a8a14eebe3c" args="" -->
typedef std::unique_ptr&lt; <a class="el" href="class_i_surface.html">ISurface</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>Ptr</b></td></tr>
<tr><td colspan="2"><h2><a name="signals"></a>
Signals</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a70b87c2fbe3c08233495f25180dc884f"></a><!-- doxytag: member="ISurface::meshChanged" ref="a70b87c2fbe3c08233495f25180dc884f" args="(ISurface *mesh)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>meshChanged</b> (<a class="el" href="class_i_surface.html">ISurface</a> *mesh)</td></tr>
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#ab70567ef2d1f791659441e6d511d5181">ISurface</a> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a419eea3eaca51c031d9b78265f48631e">iid</a> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a961e29f03db6364c41423e6ed0882e56"></a><!-- doxytag: member="ISurface::setScene" ref="a961e29f03db6364c41423e6ed0882e56" args="(Scene *scene)=0" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>setScene</b> (<a class="el" href="class_scene.html">Scene</a> *scene)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada3cb8bfe6bee99e2c0ba82b5d070d38"></a><!-- doxytag: member="ISurface::scene" ref="ada3cb8bfe6bee99e2c0ba82b5d070d38" args="() const =0" -->
virtual <a class="el" href="class_scene.html">Scene</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>scene</b> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual const <a class="el" href="classgeometry_1_1_a_a_b_b.html">geometry::AABB</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a889365120e24bac514f1d437f3d13531">boundingBox</a> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#af199f348a53404b2a9afe4d53320967d">setColor</a> (const <a class="el" href="class_color.html">Color</a> &amp;color)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_color.html">Color</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a0553f349f4fe8b9e0752fe01e422df35">color</a> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a308ae3492b08adf81eb71603cc9c9e77">setSelected</a> (bool val)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a62c36e72a939cc47af4fb7f5a8e7129b">isSelected</a> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a7e75193d5d130a68cff4cf99498ed23a">addVertex</a> (const Point3 &amp;point)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a251ae42a8041362cc406610abf0ce198">addVertex</a> (<a class="el" href="class_vertex.html">Vertex</a> *v)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a403cf8cca0dfcc43965a000405ce5e0c">removeVertex</a> (size_t id)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_vertex.html">Vertex</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a5776c72d4f1c81b18e2d54d3b0becdb7">vertex</a> (size_t iid)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual const <a class="el" href="class_vertex.html">Vertex</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#ae72da7c2999fdcd7ae93832c6ed419f7">vertex</a> (size_t iid) const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#ad6ddd94c54fd415bac6bf17d5db6fc0a">numVertices</a> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a49820f4da9ade4ef0f03865e7280f07b"></a><!-- doxytag: member="ISurface::addEdge" ref="a49820f4da9ade4ef0f03865e7280f07b" args="(const Edge &amp;edge)=0" -->
virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><b>addEdge</b> (const <a class="el" href="class_edge.html">Edge</a> &amp;edge)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0fd44b70f97c5293f03aa69c568faf94"></a><!-- doxytag: member="ISurface::addEdge" ref="a0fd44b70f97c5293f03aa69c568faf94" args="(size_t v1, size_t v2)=0" -->
virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><b>addEdge</b> (size_t v1, size_t v2)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a3a8c2686ce030b53fe40d9c5c1235046">addFace</a> (const QVector&lt; size_t &gt; &amp;vertexIndexes)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a725c3b6e08bae17a345d6ac428cb862a">replaceFace</a> (size_t index, const QVector&lt; size_t &gt; &amp;vertexIndexList)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a61483ac0eed9ce967f24c330aaa4321c">removeFace</a> (size_t id)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a0970ffe01db8cfacabf260231db43e79">numFaces</a> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_face.html">Face</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a2bffda91521930b47acaec4990afed66">face</a> (size_t index)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a21058e024baa4953f330323b261af6d8"></a><!-- doxytag: member="ISurface::getFaceIndexAtPoint" ref="a21058e024baa4953f330323b261af6d8" args="(const Point3 &amp;p) const =0" -->
virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><b>getFaceIndexAtPoint</b> (const Point3 &amp;p) const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa3cd2912e388685d82db2c8aaa61d721"></a><!-- doxytag: member="ISurface::getClosestPointAtPoint" ref="aa3cd2912e388685d82db2c8aaa61d721" args="(const Point3 &amp;p) const =0" -->
virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><b>getClosestPointAtPoint</b> (const Point3 &amp;p) const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae63d201d047250f7216724a279cbbe61"></a><!-- doxytag: member="ISurface::getPointsInRadius" ref="ae63d201d047250f7216724a279cbbe61" args="(const Point3 &amp;p, float radius) const =0" -->
virtual QVector&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>getPointsInRadius</b> (const Point3 &amp;p, float radius) const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a71e06703ed2a7438c38bb3fbfcac1b54"></a><!-- doxytag: member="ISurface::adjustPointNormal" ref="a71e06703ed2a7438c38bb3fbfcac1b54" args="(size_t index)=0" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>adjustPointNormal</b> (size_t index)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a79815364bb095c8f7874cc5bf00e0477"></a><!-- doxytag: member="ISurface::lock" ref="a79815364bb095c8f7874cc5bf00e0477" args="() const =0" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>lock</b> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1c6452333311a071ad06876d951cf63e"></a><!-- doxytag: member="ISurface::unlock" ref="a1c6452333311a071ad06876d951cf63e" args="() const =0" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>unlock</b> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a6e0d4a5e3fcc3d79d02ed7924fb7faee">hasChanged</a> ()=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#af76ece8998133ea0151f1d899ab09235">setChanged</a> (bool val)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac08112d3036fb4bbfc587a70e749b7c5"></a><!-- doxytag: member="ISurface::selectedPoints" ref="ac08112d3036fb4bbfc587a70e749b7c5" args="() const =0" -->
virtual QVector&lt; size_t &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>selectedPoints</b> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a55a046118976beaa52578928e672145d"></a><!-- doxytag: member="ISurface::setSelectedPoints" ref="a55a046118976beaa52578928e672145d" args="(const QVector&lt; size_t &gt; &amp;indicesArray)=0" -->
virtual void&#160;</td><td class="memItemRight" valign="bottom"><b>setSelectedPoints</b> (const QVector&lt; size_t &gt; &amp;indicesArray)=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_iterator.html">Iterator</a>&lt; <a class="el" href="class_vertex.html">Vertex</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a852184671d98db33f9160b40f5aa5e76">vertexIterator</a> ()=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a190d8639cb35aedd1f4162608f12d7fa"></a><!-- doxytag: member="ISurface::constVertexIterator" ref="a190d8639cb35aedd1f4162608f12d7fa" args="() const =0" -->
virtual <a class="el" href="class_iterator.html">Iterator</a>&lt; <a class="el" href="class_vertex.html">Vertex</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>constVertexIterator</b> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_iterator.html">Iterator</a>&lt; <a class="el" href="class_face.html">Face</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a42b6325545e89a172a7d0585b9f03f2d">faceIterator</a> ()=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_iterator.html">Iterator</a>&lt; <a class="el" href="class_face.html">Face</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_i_surface.html#a67a32caec0e8d348a10eecf6f7c2c3a4">constFaceIterator</a> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0426e0e4f0eae725f39913ef56f652d0"></a><!-- doxytag: member="ISurface::edgeIterator" ref="a0426e0e4f0eae725f39913ef56f652d0" args="()=0" -->
virtual <a class="el" href="class_iterator.html">Iterator</a>&lt; <a class="el" href="class_edge.html">Edge</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>edgeIterator</b> ()=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5547c17cfcb42d5607c99761427e57c"></a><!-- doxytag: member="ISurface::constEdgeIterator" ref="ad5547c17cfcb42d5607c99761427e57c" args="() const =0" -->
virtual <a class="el" href="class_iterator.html">Iterator</a>&lt; <a class="el" href="class_edge.html">Edge</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>constEdgeIterator</b> () const =0</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Interface that every 3D object should implement.</p>
<dl class="author"><dt><b>Author:</b></dt><dd>Juan Roberto Cabral Flores &lt;<a href="mailto:roberto.cabral@gmail.com">roberto.cabral@gmail.com</a>&gt; </dd></dl>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="ab70567ef2d1f791659441e6d511d5181"></a><!-- doxytag: member="ISurface::ISurface" ref="ab70567ef2d1f791659441e6d511d5181" args="()" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ISurface::ISurface </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Default contructor. The classes that implement this interface, should have a default contructor that initiliazes the object with valid values. </p>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a3a8c2686ce030b53fe40d9c5c1235046"></a><!-- doxytag: member="ISurface::addFace" ref="a3a8c2686ce030b53fe40d9c5c1235046" args="(const QVector&lt; size_t &gt; &amp;vertexIndexes)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual size_t ISurface::addFace </td>
          <td>(</td>
          <td class="paramtype">const QVector&lt; size_t &gt; &amp;&#160;</td>
          <td class="paramname"><em>vertexIndexes</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Add a triangle to the object. The triangle is formed by the vertices passed as arguments. The vertices are passed by means of their ID</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">v1</td><td>id of the first vertex that form the triangle. </td></tr>
    <tr><td class="paramname">v2</td><td>id of the first vertex that form the triangle. </td></tr>
    <tr><td class="paramname">v3</td><td>id of the first vertex that form the triangle.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>triangle ID </dd></dl>

<p>Implemented in <a class="el" href="class_mesh.html#a191e57fc85691d1ce78af4ea21e2f740">Mesh</a>, and <a class="el" href="class_subdivision.html#a8e1ad21b09b70653d6d8c5f83235ebac">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a7e75193d5d130a68cff4cf99498ed23a"></a><!-- doxytag: member="ISurface::addVertex" ref="a7e75193d5d130a68cff4cf99498ed23a" args="(const Point3 &amp;point)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual size_t ISurface::addVertex </td>
          <td>(</td>
          <td class="paramtype">const Point3 &amp;&#160;</td>
          <td class="paramname"><em>point</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Add point to object. The point added is in local coordinates ( i.e. relative to object's origin.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">point</td><td>point to add to the object. The point is in local coords.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>ID of the new point. </dd></dl>

<p>Implemented in <a class="el" href="class_mesh.html#a6021ffd8934d9145ca1edd7df2414f52">Mesh</a>, and <a class="el" href="class_subdivision.html#a18a9dab1584e5f76f6626594313ff12d">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a251ae42a8041362cc406610abf0ce198"></a><!-- doxytag: member="ISurface::addVertex" ref="a251ae42a8041362cc406610abf0ce198" args="(Vertex *v)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual size_t ISurface::addVertex </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_vertex.html">Vertex</a> *&#160;</td>
          <td class="paramname"><em>v</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Add vertex v to this object. The object will mantain the reference to the vertex. Do not delete the vertex while the object has a reference to it.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">v</td><td>vertex to add to the object.</td></tr>
  </table>
  </dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>the id of the vertex inside the object. </dd></dl>

<p>Implemented in <a class="el" href="class_mesh.html#a9f2bc7413f4e29d5868686a98842ea1c">Mesh</a>, and <a class="el" href="class_subdivision.html#a8f96afb991cc841deebc8fda9ea410b3">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a889365120e24bac514f1d437f3d13531"></a><!-- doxytag: member="ISurface::boundingBox" ref="a889365120e24bac514f1d437f3d13531" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual const <a class="el" href="classgeometry_1_1_a_a_b_b.html">geometry::AABB</a>&amp; ISurface::boundingBox </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the bounding box of the object. </p>

<p>Implemented in <a class="el" href="class_mesh.html#ab56baecdf85f039cb0ad89f4925d26fe">Mesh</a>, and <a class="el" href="class_subdivision.html#a4bf430f69fb34d13de266c449c350ea2">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a0553f349f4fe8b9e0752fe01e422df35"></a><!-- doxytag: member="ISurface::color" ref="a0553f349f4fe8b9e0752fe01e422df35" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="class_color.html">Color</a> ISurface::color </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Gets the object base color. Used as vertex color, line color, shading color, etc.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>color of the object. </dd></dl>

<p>Implemented in <a class="el" href="class_mesh.html#abad5264542d1984300759a171def98bb">Mesh</a>, and <a class="el" href="class_subdivision.html#a8269bad5a8b7a3dd8b69753b3b46ca50">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a67a32caec0e8d348a10eecf6f7c2c3a4"></a><!-- doxytag: member="ISurface::constFaceIterator" ref="a67a32caec0e8d348a10eecf6f7c2c3a4" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="class_iterator.html">Iterator</a>&lt;<a class="el" href="class_face.html">Face</a>&gt; ISurface::constFaceIterator </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Return a const iterator over the faces that contained in this object. </p>

<p>Implemented in <a class="el" href="class_subdivision.html#a7c5a364941fe1368f8671872c7d34fb7">Subdivision</a>, and <a class="el" href="class_mesh.html#ac2fcd123ddabd6134c86d95195b2581f">Mesh</a>.</p>

</div>
</div>
<a class="anchor" id="a2bffda91521930b47acaec4990afed66"></a><!-- doxytag: member="ISurface::face" ref="a2bffda91521930b47acaec4990afed66" args="(size_t index)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="class_face.html">Face</a>* ISurface::face </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>index</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the face at the position index. </p>

<p>Implemented in <a class="el" href="class_mesh.html#a63fb3c4a4b4ec01294a7568f65a9a156">Mesh</a>, and <a class="el" href="class_subdivision.html#a96700d7b010928d7adf68da279ecbb64">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a42b6325545e89a172a7d0585b9f03f2d"></a><!-- doxytag: member="ISurface::faceIterator" ref="a42b6325545e89a172a7d0585b9f03f2d" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="class_iterator.html">Iterator</a>&lt;<a class="el" href="class_face.html">Face</a>&gt; ISurface::faceIterator </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns a face iterator to traverse over all the faces of this object. </p>

<p>Implemented in <a class="el" href="class_subdivision.html#a7eeefe30c943e6a878edb68cd1e006d6">Subdivision</a>, and <a class="el" href="class_mesh.html#ae256fa531699b096ebaaf220586b5bd7">Mesh</a>.</p>

</div>
</div>
<a class="anchor" id="a6e0d4a5e3fcc3d79d02ed7924fb7faee"></a><!-- doxytag: member="ISurface::hasChanged" ref="a6e0d4a5e3fcc3d79d02ed7924fb7faee" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool ISurface::hasChanged </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Flag to check if the surface has been modified. </p>

<p>Implemented in <a class="el" href="class_mesh.html#ac6c7c275a9058e234321f5e9d961cbd4">Mesh</a>, and <a class="el" href="class_subdivision.html#a0949f2d5f7b0b9ebdf6ee4fd56b31923">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a419eea3eaca51c031d9b78265f48631e"></a><!-- doxytag: member="ISurface::iid" ref="a419eea3eaca51c031d9b78265f48631e" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual size_t ISurface::iid </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Instance id of the surface </p>

<p>Implemented in <a class="el" href="class_mesh.html#a1611c39a7e793ba222e92eba9da6219e">Mesh</a>, and <a class="el" href="class_subdivision.html#a6c592bbe8bc04347d2ddbe8f8697ada1">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a62c36e72a939cc47af4fb7f5a8e7129b"></a><!-- doxytag: member="ISurface::isSelected" ref="a62c36e72a939cc47af4fb7f5a8e7129b" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool ISurface::isSelected </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the selected state of the object.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>true if the object is selected, otherwise, false. </dd></dl>
<dl class="see"><dt><b>See also:</b></dt><dd><a class="el" href="class_i_surface.html#a308ae3492b08adf81eb71603cc9c9e77">setSelected</a> </dd></dl>

<p>Implemented in <a class="el" href="class_mesh.html#a0e8b637313fdad092b8e4b4f1823f777">Mesh</a>, and <a class="el" href="class_subdivision.html#a06fde78c20ca85a1bd8c7c4e99c286b6">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a0970ffe01db8cfacabf260231db43e79"></a><!-- doxytag: member="ISurface::numFaces" ref="a0970ffe01db8cfacabf260231db43e79" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual size_t ISurface::numFaces </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the number of faces that the object has.</p>
<p>TODO: This may not belong here as is specific to mesh surfaces. </p>

<p>Implemented in <a class="el" href="class_mesh.html#aa71ce7b007fd9b1eb2b1bea9d24a3aa7">Mesh</a>, and <a class="el" href="class_subdivision.html#adbfdf328d9758893dd50fe086bad7252">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="ad6ddd94c54fd415bac6bf17d5db6fc0a"></a><!-- doxytag: member="ISurface::numVertices" ref="ad6ddd94c54fd415bac6bf17d5db6fc0a" args="() const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual size_t ISurface::numVertices </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Gets the number of vertices </p>

<p>Implemented in <a class="el" href="class_mesh.html#ad034013a938de18c6babdf16635247d7">Mesh</a>, and <a class="el" href="class_subdivision.html#a984b69f5f23912f2762e070f7329b038">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a61483ac0eed9ce967f24c330aaa4321c"></a><!-- doxytag: member="ISurface::removeFace" ref="a61483ac0eed9ce967f24c330aaa4321c" args="(size_t id)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void ISurface::removeFace </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>id</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Remove the triangle from the object. The points or vertices that compound the triangle are not removed from the object. The points could be rendered acording to the drawing mode.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">id</td><td>triangle ID to remove. </td></tr>
  </table>
  </dd>
</dl>

<p>Implemented in <a class="el" href="class_mesh.html#a5f4de604734ffe7d72bbab673290eed7">Mesh</a>, and <a class="el" href="class_subdivision.html#a17456cd16a27c4620cb1821ba637d115">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a403cf8cca0dfcc43965a000405ce5e0c"></a><!-- doxytag: member="ISurface::removeVertex" ref="a403cf8cca0dfcc43965a000405ce5e0c" args="(size_t id)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void ISurface::removeVertex </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>id</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Remove a point from the object. If the point form part of a triangle then that triangle should be removed from the object.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">id</td><td>ID of the point to delete. </td></tr>
  </table>
  </dd>
</dl>

<p>Implemented in <a class="el" href="class_mesh.html#a8be34a7681ec6570e52611d7298a99e4">Mesh</a>, and <a class="el" href="class_subdivision.html#a43842e328a33b1b0ef34b2187985be4b">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a725c3b6e08bae17a345d6ac428cb862a"></a><!-- doxytag: member="ISurface::replaceFace" ref="a725c3b6e08bae17a345d6ac428cb862a" args="(size_t index, const QVector&lt; size_t &gt; &amp;vertexIndexList)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void ISurface::replaceFace </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>index</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const QVector&lt; size_t &gt; &amp;&#160;</td>
          <td class="paramname"><em>vertexIndexList</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Replace a triangle with new indices to existing points. </p>

<p>Implemented in <a class="el" href="class_mesh.html#ab8cfba4c9da4c35920c5f63090885477">Mesh</a>, and <a class="el" href="class_subdivision.html#ab4ec81c499d376d314010bdf48e3f06a">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="af76ece8998133ea0151f1d899ab09235"></a><!-- doxytag: member="ISurface::setChanged" ref="af76ece8998133ea0151f1d899ab09235" args="(bool val)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void ISurface::setChanged </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>val</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Sets a flag to mark the surface as modified. </p>

<p>Implemented in <a class="el" href="class_mesh.html#affb964be4b82dd642346231cad8f4696">Mesh</a>, and <a class="el" href="class_subdivision.html#a4986d2573fc749af728fcdddb412215e">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="af199f348a53404b2a9afe4d53320967d"></a><!-- doxytag: member="ISurface::setColor" ref="af199f348a53404b2a9afe4d53320967d" args="(const Color &amp;color)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void ISurface::setColor </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_color.html">Color</a> &amp;&#160;</td>
          <td class="paramname"><em>color</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Sets the object base color. Used as vertex color, line color, shading color, etc.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">color</td><td>color of the object. </td></tr>
  </table>
  </dd>
</dl>

<p>Implemented in <a class="el" href="class_mesh.html#a7be45b0d141ec1c83c6a554a454c68f0">Mesh</a>, and <a class="el" href="class_subdivision.html#af8533079d416d887dca4b51ae7c24b1e">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a308ae3492b08adf81eb71603cc9c9e77"></a><!-- doxytag: member="ISurface::setSelected" ref="a308ae3492b08adf81eb71603cc9c9e77" args="(bool val)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual void ISurface::setSelected </td>
          <td>(</td>
          <td class="paramtype">bool&#160;</td>
          <td class="paramname"><em>val</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Mark the object as selected. This property is used by the renderers to mark selected objects (for example draw a bounding box around the object)</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">val</td><td>pass true to set the object as selected </td></tr>
  </table>
  </dd>
</dl>

<p>Implemented in <a class="el" href="class_mesh.html#a5be77a24074569778cd8cbe47138c013">Mesh</a>, and <a class="el" href="class_subdivision.html#ad5338cd947c264e58a34d4acd48a700d">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a5776c72d4f1c81b18e2d54d3b0becdb7"></a><!-- doxytag: member="ISurface::vertex" ref="a5776c72d4f1c81b18e2d54d3b0becdb7" args="(size_t iid)=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="class_vertex.html">Vertex</a>* ISurface::vertex </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>iid</em></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the vertex with the instance ID iid. </p>

<p>Implemented in <a class="el" href="class_mesh.html#a163d154511483e51213b617a1f1dd0bd">Mesh</a>, and <a class="el" href="class_subdivision.html#ab3289dee0f688d18b032760968f3c489">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="ae72da7c2999fdcd7ae93832c6ed419f7"></a><!-- doxytag: member="ISurface::vertex" ref="ae72da7c2999fdcd7ae93832c6ed419f7" args="(size_t iid) const =0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual const <a class="el" href="class_vertex.html">Vertex</a>* ISurface::vertex </td>
          <td>(</td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>iid</em></td><td>)</td>
          <td> const<code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns the vertex with the instance ID iid. </p>

<p>Implemented in <a class="el" href="class_mesh.html#a2c98b49e6c06ea3f4f12edce4b72b791">Mesh</a>, and <a class="el" href="class_subdivision.html#a2ab101893d202e8fbee113492cb1d966">Subdivision</a>.</p>

</div>
</div>
<a class="anchor" id="a852184671d98db33f9160b40f5aa5e76"></a><!-- doxytag: member="ISurface::vertexIterator" ref="a852184671d98db33f9160b40f5aa5e76" args="()=0" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">virtual <a class="el" href="class_iterator.html">Iterator</a>&lt;<a class="el" href="class_vertex.html">Vertex</a>&gt; ISurface::vertexIterator </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td><code> [pure virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<p>Returns a vertex iterator to traverse over all the vertices in this object. </p>

<p>Implemented in <a class="el" href="class_subdivision.html#a57e134c89c965fb6038f180c89bb496d">Subdivision</a>, and <a class="el" href="class_mesh.html#a1a3da9a1014758926c9af5f557d97e5d">Mesh</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>engine/include/<a class="el" href="_i_surface_8h_source.html">ISurface.h</a></li>
</ul>
</div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Enumerator</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>



<hr class="footer"/><address class="footer"><small>
Generated on Thu May 31 2012 16:19:52 for QSculpt by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.7.5.1
</small></address>

</body>
</html>
